package com.shujia.Day07;

import java.util.Arrays;

public class Demo06StringFunction3 {
    public static void main(String[] args) {
        /*
          TODO  String类的其他功能
                String replace(char old,char new)
                String replace(String old,String new) // 非常重要
                String trim()  去除前后空格信息
                字典顺序比较：
                int compareTo(String str)
                int compareToIgnoreCase(String str)


          注意：对于String中修改数据的函数，不会对String本身进行修改，会返回一个新的String对象
         */
        String str = "123 456";
        System.out.println(str.replace(" ", ","));
        System.out.println(str);

        String str1 = "  今天天气真好呀  \t";
        System.out.println(str1);
        System.out.println(str1.trim()+"|");

        // 对于数值数据进行排序时，是按照自然排序方式
        int[] ints = {11,10,100};
        Arrays.sort(ints);
        System.out.println(Arrays.toString(ints));  // [10, 11, 100]

        // 对于字符串类型数据进行比较时，是按照字典序进行比较的
        String strArr[] = {"11","10","100"};
        Arrays.sort(strArr);
        System.out.println(Arrays.toString(strArr)); // [10, 100, 11]

        String intStr1 = "11";
        String intStr2 = "100";
        int compareToRes = intStr1.compareTo(intStr2);  // 1
        System.out.println(compareToRes);



        /*
            value?
            private final char value[];  => 11
            value = ['1','1']

            public int compareTo(String anotherString) {
                int len1 = value.length;  ['1','1'] => 2
                int len2 = anotherString.value.length; ['1','0','0'] => 3
                int lim = Math.min(len1, len2); // 取长度最小值 2
                char v1[] = value;  ['1','1']
                char v2[] = anotherString.value; ['1','0','0']

                int k = 0; // 下标
                while (k < lim) {
                    // 取出对应下标中的字符
                    char c1 = v1[k];
                    char c2 = v2[k];
                    // k=1 => c1=1,c2=0
                    if (c1 != c2) {
                        // 将两个char类型的数据通过ASC码值进行比较 返回其差值
                        // c1表示当前字符串  c2表示传入比较的字符串
                        return c1 - c2;
                    }
                    k++;
                }
                return len1 - len2;
            }


         */

        String str4 = "abc";
        String res = "";
        char[] chars = str4.toCharArray();
        for (int i = chars.length-1; i >= 0 ; i--) {
            res += chars[i];
        }
        System.out.println(res);


        String javaStr = "oaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
//        int num = 0;
//        for (int i = 0; i < javaStr.length(); i++) {
//            if (i + 4 < javaStr.length()){
//                String substring = javaStr.substring(i, i + 4);
//                if (substring.equals("java")) {
//                    num ++;
//                }
//            }
//        }
//        System.out.println("num:"+num);

        int num = 0;
//        while (javaStr.contains("java")){
//            int javaStartIndex = javaStr.indexOf("java");
//            javaStr = javaStr.substring(javaStartIndex+4);
//            num ++;
//        }
//        System.out.println("num:"+num);

        // TODO indexOf当获取不到值对应返回结果为 -1
        //        javaStr = "hello";
        //        System.out.println(javaStr.indexOf("java"));

        int javaStartIndex = 0;
        while ((javaStartIndex = javaStr.indexOf("java")) != -1){
            javaStr = javaStr.substring(javaStartIndex+4);
            num ++;
        }
        System.out.println("num:"+num);

        // 当前String类型的字符长度是不可更改的 => 字符串底层做数据存储是 char[] 定义后长度不可发生变化
        String st = "a";
        String b = st.concat("b");




    }
}
